package cn.sofwin.sb.core.mvc.dao;

import cn.sofwin.sb.core.mvc.entity.IdEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 抽象的父类DAO
 * @param <T>
 */
public abstract interface BaseDao<T extends IdEntity> {
    /**使用泛型
    使用int表示影响的条数
     */

    /**
     * 创建对象
     * @param entity
     * @return
     */
    int insert(T entity);

    /**
     * 删除对象*
     * @param id
     * @return
     */
    int delete(Integer id);

    /**
     * 更新对象
     * @param entity
     * @return
     */
    int update(T entity);

    /**
     * 根据主键查询单个对象
     * @param id
     * @return
     */
    T selectById(Integer id);

    /**
     * 分页查询
     * @param query
     * @param sort
     * @param offset
     * @param size
     * @return
     */
    List<T> list(@Param("query")String query, @Param("sort")String sort, @Param("offset")Integer offset, @Param("size")Integer size);

    /**
     * 统计查询
     * @param query
     * @return
     */
    int count(String query);

}
